package com.cmict.data.infra.api.message.dto;

import com.cmict.data.infra.api.emus.NotifyRecipientFilterTypeEnum;
import com.cmict.data.infra.api.emus.NotifySendTypeEnum;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 公告信息
 *
 * @author hccake 2020-12-15 17:01:15
 */
@Data
public class MessageDTO {

	private static final long serialVersionUID = 1L;

	/**
	 * 模板ID
	 */
	@NotNull(message = "模板ID")
	private Long templateId;

	/**
	 * 内容参数
	 */
    @ApiModelProperty(value = "内容参数")
	private Map<String,Object> param;

	/**
	 * 附属url
	 */
    @ApiModelProperty(value = "附属url")
	private String url;

	/**
	 * 接收人筛选方式，
	 * @see NotifyRecipientFilterTypeEnum
	 */
	@NotNull(message = "接收人范围不能为空")
    @ApiModelProperty(value = "接收人范围")
	private Integer recipientFilterType;

	/**
	 * 对应接收人筛选方式的条件信息，多个用逗号分割。如角色标识，组织ID，用户类型，用户ID等
	 */
    @ApiModelProperty(value = "对应接收人筛选方式的条件信息。如角色标识，组织ID，用户类型，用户ID等")
	private List<Long> recipientFilterCondition;

	private List<Integer> channel;
	/**
	 * 消息触发类型不能为空:0 草稿 1 立即发送；2 定时发送
	 * @see NotifySendTypeEnum
	 */
	@NotNull(message = "消息触发类型不能为空:1 立即发送；2 定时发送")
    @ApiModelProperty(value = "消息触发类型")
	private Integer sendAction;

	/**
	 * 消息发送时间,定时任务必填
	 */
    @ApiModelProperty(value = "消息发送时间")
	private LocalDateTime sendTime;

	/**
	 * 是否开启超时提醒
	 */
	private Boolean isRemind  ;
	/**
	 * 超时时间
	 */
	private BigDecimal time;
	/**
	 * 消息间隔
	 */
	private BigDecimal message;
	/**
	 * 推送次数
	 */
	private Integer frequency;
	/**
	 * 已完成 推送次数
	 */
	private Integer completerFrequency;
	/**
	 * 超时唯一标识
	 */
	public String remindId;

}
